package protect.week09;

import java.util.HashMap;
import java.util.Iterator;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/26 21:06
 * @package protect.week09
 * @description 剑指 Offer 50. 第一个只出现一次的字符
 * 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。
 *
 * 示例 1:
 *
 * 输入：s = "abaccdeff"
 * 输出：'b'
 * 示例 2:
 *
 * 输入：s = ""
 * 输出：' '
 */

public class Ch01_FirstUniqChar {
    public char firstUniqChar(String s) {
        HashMap<Character, Boolean> sMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            // 当不存在时候
            if (!sMap.containsKey(s.charAt(i))){
                sMap.put(s.charAt(i),true);
            }else {
                sMap.replace(s.charAt(i),false);
            }
        }
        System.out.println(sMap);

        Iterator<Character> iterator = sMap.keySet().iterator();

//        while (iterator.hasNext()){
//            if (sMap.get(iterator.next())){
//                return iterator.next();
//            }
//        }
        for (int i = 0; i < s.length(); i++) {
            if (sMap.get(s.charAt(i))){
                return s.charAt(i);
            }
        }

        return ' ';
    }

    public static void main(String[] args) {
        char leetcode = new Ch01_FirstUniqChar().firstUniqChar("leetcode");
        System.out.println(leetcode);
    }
}
